<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<style>
body {
  --a: red;
  --b: blue;
}

.setAToGreen {
  --a: green;
}

.setAToB {
  --a: var(--b);
}

.backgroundA {
  background: var(--a);
}
</style>
<div id="outer">
  <div class="backgroundA" id='backgroundA'></div>

  <div class="setAToB">
    <div class="backgroundA" id='backgroundB'></div>
  </div>
</div>

<script>
test(function() {
  var red = "rgb(255, 0, 0)";
  var blue = "rgb(0, 0, 255)";
  var green = "rgb(0, 128, 0)";
  assert_equals(getComputedStyle(backgroundA).backgroundColor, red);
  assert_equals(getComputedStyle(backgroundB).backgroundColor, blue);
  outer.classList.add('setAToGreen');
  assert_equals(getComputedStyle(backgroundA).backgroundColor, green);
  assert_equals(getComputedStyle(backgroundB).backgroundColor, blue);
}, 'Custom properties are recomputed when parent style changes.');
</script>
